// 基础配置 - 从本地存储获取或使用默认值
const getBaseUrl = () => {
  const storedUrl = uni.getStorageSync('baseUrl')
  // 将默认地址改为WebSocket的地址（不包含协议）
  const originUrl = '117.23.4.241:8881/api'
  if (storedUrl) {
    return storedUrl
  } else {
    uni.setStorageSync('baseUrl', originUrl)
    return originUrl
  }
}

// 将基础地址转换为HTTP地址
const getHttpUrl = () => {
  const baseUrl = getBaseUrl()
  return `http://${baseUrl}`
}

// 创建请求实例
export const request = (options) => {
  // import {getToken} from '../api/auth.js'

  // 基础配置
  // const baseUrl = 'http://192.168.2.55:8881/api' // 后端基础地址

  const httpBaseUrl = getHttpUrl()
  const url = httpBaseUrl + options.url;

  // const url = getBaseUrl() + options.url



  // 请求头（携带 Token）
  const header = {
    'Content-Type': 'application/json',
    ...options.header
  }
  const token = uni.getStorageSync('token')
  console.log(token)
  if (token) {
    header.Authorization = `${token}` // Token 格式根据后端要求调整
  }

  // 发起请求
  return new Promise((resolve, reject) => {

    uni.request({
      url,
      method: options.method || 'GET',
      data: options.data || {},
      header,
      success: (res) => {
        // console.log('接口返回的完整数据', res.data)
        const {
          code,
          data,
          message
        } = res.data

        // 接口成功（根据后端状态码调整）
        if (code === 200) {
          resolve(res.data)
        }
        // Token 失效（如 500）
        else if (code === 500) {
          // uni.showToast({
          //   title: '获取失败',
          //   icon: 'none'
          // })
          // 清除 Token 并跳转登录页
          uni.removeStorageSync('token')
          uni.redirectTo({
            url: '/pages/LoginPage/LoginPage'
          })
          reject(new Error('登录已过期'))
        }
        // 其他错误
        else {
          uni.showToast({
            title: message || '请求失败',
            icon: 'none'
          })
          reject(new Error(message || '接口错误'))
        }
      },
      fail: (err) => {
        uni.showToast({
          title: '网络错误，请检查网络',
          icon: 'none'
        })
        reject(err)
      }
    })
  })
}

// 封装SSE连接函数
// export function connectSSE(userId) {
//   const baseUrl = getBaseUrl();
//   // SSE的URL（注意：协议需为http/https，且不能带跨域限制）
//   const url = `${baseUrl}/app/sse/connect/${userId}`;

//   // 获取token（如果需要认证）
//   const token = uni.getStorageSync('token');

//   // 创建EventSource实例（处理SSE）
//   const eventSource = new EventSource(
//     url, {
//       headers: {
//         Authorization: token || ''
//       }
//     } // 携带认证信息
//   );

//   // 监听SSE事件
//   eventSource.onmessage = (event) => {
//     console.log('收到SSE数据:', event.data);
//     // 处理数据（如解析JSON、更新UI等）
//   };

//   // 监听连接打开
//   eventSource.onopen = () => {
//     console.log('SSE连接已打开');
//   };

//   // 监听错误
//   eventSource.onerror = (error) => {
//     console.error('SSE连接错误:', error);
//     eventSource.close(); // 出错时关闭连接
//   };

//   // 返回关闭连接的方法（供外部调用）
//   return () => {
//     eventSource.close();
//     console.log('SSE连接已关闭');
//   };
// }

// export default request
// export default connectSSE